package loggerhelper
import (
logrus "github.com/sirupsen/logrus"
)
type Dict map [string ]interface {}
func New () *logrus .Logger {
log := logrus .New ()
log .SetFormatter (&logrus .JSONFormatter {})
return log
}
var Logger = New ()
var defaultlog *logrus .Entry
func Init (opts ...Option ) {
options := DefaultOpts
for _ , opt := range opts {
opt .Apply (&options )
}
if options .Output != nil {
Logger .SetOutput (options .Output )
}
var fmter logrus .Formatter
if options .Type == FormatType_Text {
_fmter := &logrus .TextFormatter {}
if options .DisableTimeField {
_fmter .DisableTimestamp = true
}
if options .TimeFormat != "" {
_fmter .TimestampFormat = options .TimeFormat
}
if options .DefaultFieldMap != nil {
_fmter .FieldMap = options .DefaultFieldMap
}
fmter = _fmter
} else {
_fmter := &logrus .JSONFormatter {}
if options .DisableTimeField {
_fmter .DisableTimestamp = true
}
if options .TimeFormat != "" {
_fmter .TimestampFormat = options .TimeFormat
}
if options .DefaultFieldMap != nil {
_fmter .FieldMap = options .DefaultFieldMap
}
fmter = _fmter
}
Logger .SetFormatter (fmter )
Logger .SetLevel (options .Level )
for _ , hook := range options .Hooks {
Logger .Hooks .Add (hook )
}
if options .ExtFields == nil || len (options .ExtFields ) == 0 {
return
}
defaultlog = Logger .WithFields (options .ExtFields )
}
func Trace (message string , fields ...map [string ]interface {}) {
fieldlen := len (fields )
if defaultlog == nil {
switch fieldlen {
case 0 :
{
Logger .Trace (message )
}
case 1 :
{
Logger .WithFields (fields [0 ]).Trace (message )
}
default :
{
l := Logger .WithFields (fields [0 ])
for _ , field := range fields [1 :] {
l = l .WithFields (field )
}
l .Trace (message )
}
}
} else {
switch fieldlen {
case 0 :
{
defaultlog .Trace (message )
}
default :
{
l := defaultlog
for _ , field := range fields {
l = l .WithFields (field )
}
l .Trace (message )
}
}
}
}
func Debug (message string , fields ...map [string ]interface {}) {
fieldlen := len (fields )
if defaultlog == nil {
switch fieldlen {
case 0 :
{
Logger .Debug (message )
}
case 1 :
{
Logger .WithFields (fields [0 ]).Debug (message )
}
default :
{
l := Logger .WithFields (fields [0 ])
for _ , field := range fields [1 :] {
l = l .WithFields (field )
}
l .Debug (message )
}
}
} else {
switch fieldlen {
case 0 :
{
defaultlog .Debug (message )
}
default :
{
l := defaultlog
for _ , field := range fields {
l = l .WithFields (field )
}
l .Debug (message )
}
}
}
}
func Info (message string , fields ...map [string ]interface {}) {
fieldlen := len (fields )
if defaultlog == nil {
switch fieldlen {
case 0 :
{
Logger .Info (message )
}
case 1 :
{
Logger .WithFields (fields [0 ]).Info (message )
}
default :
{
l := Logger .WithFields (fields [0 ])
for _ , field := range fields [1 :] {
l = l .WithFields (field )
}
l .Info (message )
}
}
} else {
switch fieldlen {
case 0 :
{
defaultlog .Info (message )
}
default :
{
l := defaultlog
for _ , field := range fields {
l = l .WithFields (field )
}
l .Info (message )
}
}
}
}
func Warn (message string , fields ...map [string ]interface {}) {
fieldlen := len (fields )
if defaultlog == nil {
switch fieldlen {
case 0 :
{
Logger .Warn (message )
}
case 1 :
{
Logger .WithFields (fields [0 ]).Warn (message )
}
default :
{
l := Logger .WithFields (fields [0 ])
for _ , field := range fields [1 :] {
l = l .WithFields (field )
}
l .Warn (message )
}
}
} else {
switch fieldlen {
case 0 :
{
defaultlog .Warn (message )
}
default :
{
l := defaultlog
for _ , field := range fields {
l = l .WithFields (field )
}
l .Warn (message )
}
}
}
}
func Error (message string , fields ...map [string ]interface {}) {
fieldlen := len (fields )
if defaultlog == nil {
switch fieldlen {
case 0 :
{
Logger .Error (message )
}
case 1 :
{
Logger .WithFields (fields [0 ]).Error (message )
}
default :
{
l := Logger .WithFields (fields [0 ])
for _ , field := range fields [1 :] {
l = l .WithFields (field )
}
l .Error (message )
}
}
} else {
switch fieldlen {
case 0 :
{
defaultlog .Error (message )
}
default :
{
l := defaultlog
for _ , field := range fields {
l = l .WithFields (field )
}
l .Error (message )
}
}
}
}
func Fatal (message string , fields ...map [string ]interface {}) {
fieldlen := len (fields )
if defaultlog == nil {
switch fieldlen {
case 0 :
{
Logger .Fatal (message )
}
case 1 :
{
Logger .WithFields (fields [0 ]).Fatal (message )
}
default :
{
l := Logger .WithFields (fields [0 ])
for _ , field := range fields [1 :] {
l = l .WithFields (field )
}
l .Fatal (message )
}
}
} else {
switch fieldlen {
case 0 :
{
defaultlog .Fatal (message )
}
default :
{
l := defaultlog
for _ , field := range fields {
l = l .WithFields (field )
}
l .Fatal (message )
}
}
}
}
func Panic (message string , fields ...map [string ]interface {}) {
fieldlen := len (fields )
if defaultlog == nil {
switch fieldlen {
case 0 :
{
Logger .Panic (message )
}
case 1 :
{
Logger .WithFields (fields [0 ]).Panic (message )
}
default :
{
l := Logger .WithFields (fields [0 ])
for _ , field := range fields [1 :] {
l = l .WithFields (field )
}
l .Panic (message )
}
}
} else {
switch fieldlen {
case 0 :
{
defaultlog .Panic (message )
}
default :
{
l := defaultlog
for _ , field := range fields {
l = l .WithFields (field )
}
l .Panic (message )
}
}
}
}
The pages are generated with Golds v0.3.6 . (GOOS=darwin GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .